Claude Code MCP装与不装

概述

MCP (Model Context Protocol) 是一个开源标准协议,允许 Claude Code 连接外部服务和数据源。本文档介绍 MCP 的安装配置方法、使用技巧,以及如何在功能扩展和上下文开销之间取得平衡。

MCP 能力增强
适用场景

建议优先安装 Context7 和 Exa 两个核心 MCP,其他 MCP 按需临时添加,以平衡功能扩展与上下文开销。

MCP 协议简介

MCP (Model Context Protocol) 是一个开源标准协议,用于实现 AI 工具与外部服务的集成。通过 MCP,Claude Code 可以连接数据库、API、问题跟踪系统等外部资源,显著扩展其能力边界。

flowchart LR
    A[Claude Code] --> B[MCP 协议]
    B --> C[GitHub]
    B --> D[数据库]
    B --> E[Exa 搜索]
    B --> F[Context7 文档]
    B --> G[其他服务]

核心能力

  • 集成问题跟踪系统:从 JIRA 读取需求并在 GitHub 创建 PR
  • 分析监控数据:检查 Sentry、Statsig 等服务的使用情况
  • 查询数据库:基于 PostgreSQL 数据库查找用户信息
  • 实时搜索:通过 Exa 获取最新技术文档和代码示例

安装 MCP Server

远程 HTTP 服务器

HTTP 传输是连接远程 MCP 服务器的推荐方式。

# 基本语法
claude mcp add --transport http <name> <url>

# 连接 GitHub
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

# 带认证头
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"
HTTP 传输优势

HTTP 传输适合远程服务,无需本地安装依赖,启动速度快,适合团队共享配置。

本地 stdio 服务器

stdio 服务器以本地进程运行,适合需要直接系统访问的工具。

# 基本语法
claude mcp add [options] <name> -- <command> [args...]

# 添加 Context7
claude mcp add --transport stdio context7 -- npx -y @upstash/context7-mcp

# 添加 Exa
claude mcp add --transport http exa https://mcp.exa.ai/mcp
Node.js 依赖

stdio 传输的 npx 命令需要本地安装 Node.js 环境,首次运行会自动下载依赖包。

从 JSON 配置添加

# HTTP 服务器
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp"}'

# stdio 服务器
claude mcp add-json context7 '{"type":"stdio","command":"npx","args":["-y","@upstash/context7-mcp"]}'

管理 MCP Server

常用命令

# 列出所有已配置的服务器
claude mcp list

# 获取特定服务器详情
claude mcp get github

# 删除服务器
claude mcp remove github

在 Claude Code 会话中使用 /mcp 命令可以检查服务器状态和完成 OAuth 认证。

配置作用域

MCP 服务器支持三个作用域级别:

作用域存储位置适用场景
local~/.claude.json个人开发、实验性配置
project.mcp.json团队共享、项目特定工具
user~/.claude.json跨项目的个人工具
# 添加到不同作用域
claude mcp add --transport http stripe --scope local https://mcp.stripe.com
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
作用域选择建议

个人实验性 MCP 使用 local 作用域,团队共享的项目工具使用 project 作用域,跨项目的个人工具使用 user 作用域。

项目级配置文件

在项目根目录创建 .mcp.json 文件,可与团队共享配置:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    },
    "exa": {
      "command": "npx",
      "args": ["-y", "exa-mcp-server"],
      "env": {
        "EXA_API_KEY": "${EXA_API_KEY}"
      }
    }
  }
}
环境变量

配置文件支持 ${VAR}${VAR:-default} 语法,敏感信息可通过环境变量注入。

触发 MCP 工具

MCP 工具触发方式

提示词触发

在提示词末尾添加 use <mcp名称> 可明确指定使用哪个 MCP 工具,避免 Claude Code 自动选择时加载不必要的工具定义,有效降低 Token 占用。

# 使用 Exa 搜索
> "查找 Spring Boot 3.2 的配置方式 use exa"

# 使用 Context7 查询文档
> "Vue3 组合式 API 的 watch 用法 use context7"

# 使用 GitHub MCP
> "查看 PR #123 的评论 use github"

触发原理

Claude Code 默认会将所有已配置 MCP 的工具定义加载到上下文中,当 MCP 数量较多时会占用大量 Token。通过 use <mcp名称> 明确指定后,Claude Code 只加载指定 MCP 的工具定义。

方式Token 占用适用场景
自动选择较高MCP 数量少、不确定用哪个
use 指定较低明确知道需要哪个 MCP
节省 Token

配置多个 MCP 时,建议养成使用 use 指定的习惯。

Exa 搜索引擎

Exa 是专为 AI 优化的搜索 API,提供实时网络搜索和代码检索能力,返回结构化 JSON 数据供 LLM 直接使用。

解决 WebFetch 403 问题

Claude Code 内置的 WebFetch 工具本质上是直接爬取网页内容,许多网站会检测并拦截此类请求,返回 403 Forbidden 错误。Exa 通过专业的搜索基础设施获取内容,绕过了这一限制:

方式原理403 问题
WebFetch直接爬取目标网页经常被拦截
Exa通过搜索 API 获取已索引内容不受影响
推荐做法

遇到 WebFetch 无法访问的网站时,改用 Exa 搜索获取相关内容。

安装配置

# 获取 API Key:访问 https://exa.ai 注册

# 添加 Exa MCP
claude mcp add --transport stdio --env EXA_API_KEY=your-key exa -- npx -y exa-mcp-server
API Key 获取

访问 https://exa.ai 注册账号后,在控制台获取 API Key,免费套餐提供每月 1000 次搜索额度。

提供的工具

工具功能
web_search_exa网络搜索,获取最新信息
get_code_context_exa代码上下文搜索,支持 GitHub 和 StackOverflow
company_research_exa公司研究和商业信息

使用示例

# 搜索最新技术文档
> "搜索 Spring Boot 3.2 的最新配置方式 use exa"

# 查找代码示例
> "在 GitHub 上搜索 Vue3 组合式 API 的最佳实践 use exa"

# 获取实时信息
> "搜索 Java 21 虚拟线程的性能基准测试 use exa"

MCP 上下文开销陷阱

问题背景

每个 MCP Server 的工具定义会占用 2000-5000 tokens,安装 5 个 MCP 可能消耗 10000+ tokens 的上下文空间,直接影响可用对话长度和响应质量。

上下文开销

每个 MCP 的工具定义会占用 2000-5000 tokens,过多的 MCP 配置会显著减少可用对话长度。

不装 MCP 的问题

完全不安装 MCP 会限制 Claude Code 的能力边界:

场景无 MCP 的限制
获取最新文档WebFetch 频繁遭遇 403,知识库截止到训练日期
代码搜索无法访问 GitHub、StackOverflow 的实时内容
框架升级无法获取最新版本的 API 变更和迁移指南
问题排查无法搜索最新的 issue 和解决方案

推荐的最小化配置

建议只安装以下两个高价值 MCP,平衡功能扩展与上下文开销:

{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    },
    "exa": {
      "command": "npx",
      "args": ["-y", "exa-mcp-server"],
      "env": {
        "EXA_API_KEY": "${EXA_API_KEY}"
      }
    }
  }
}
MCP核心价值Token 开销
Context7获取框架官方文档的最新内容约 2500
Exa实时网络搜索,绕过 403 限制约 3000
按需启用

其他 MCP(如 GitHub、数据库)可在需要时临时添加,用完后移除。

查看上下文占用

使用 /context 命令可以实时查看当前会话的上下文使用情况:

> /context

输出示例:

Context Usage:
  System prompt:     8,234 tokens (4.1%)
  MCP tools:        12,456 tokens (6.2%)  # MCP 工具定义占用
  Conversation:     45,678 tokens (22.8%)
  Available:       133,632 tokens (66.9%)
  Total:           200,000 tokens

通过此命令可以:

  • 监控 MCP 工具定义的实际 Token 消耗
  • 评估是否需要移除不常用的 MCP
  • 在长对话前检查剩余可用空间
定期检查

建议在开始长对话前使用 /context 命令检查上下文占用,必要时移除不常用的 MCP 以释放空间。